package com.lagou.stage02;

public class PhoneServiceTest {
    public static void main(String[] args) {
        // 创建PhoneCard对象， 初始化卡号，开类型，用户名，密码，即余额
        PhoneCard pc = new PhoneCard(PhoneCardType.LC.getCardType(), 123456, "Mark", "1234", 100);
        pc.showDetails();
        System.out.println();

        // 多态 抽象父类引用 指向 实现类
        // 设置通话套餐，上网套餐
        ServiceAbstract san = new NetworkService(100, 48);
        san.show();
        ServiceAbstract sac = new CallService(1000, 500, 58);
        sac.show();
        System.out.println();

        // 强转类型 将抽象父类类型转为实现类类型
        // 模拟打电话和上网的使用
        pc.calling((CallService) sac, 900);
        pc.surfing((NetworkService) san, 99);
        System.out.println();

        // 计算并打印用户消费总信息
        UserConsumeData usd = new UserConsumeData(pc, san, sac);
        usd.show();
        System.out.println();

        // 计算余额并打印用户信息
        pc.getBalance(usd);
        pc.show();
    }
}
